package com.stripe.samplestore;
import android.support.annotation.Nullable;
import java.text.DecimalFormat;
import java.util.Currency;
/**
* Class for utility functions.
*/
public class StoreUtils {
static String getEmojiByUnicode(int unicode){
return new String(Character.toChars(unicode));
}
static String getPriceString(long price, @Nullable Currency currency) {
Currency displayCurrency = currency == null
? Currency.getInstance("USD")
: currency;
int fractionDigits = displayCurrency.getDefaultFractionDigits();
int totalLength = String.valueOf(price).length();
StringBuilder builder = new StringBuilder();
builder.append('\u00A4');
if (fractionDigits == 0) {
for (int i = 0; i < totalLength; i++) {
builder.append('#');
}
DecimalFormat noDecimalCurrencyFormat = new DecimalFormat(builder.toString());
noDecimalCurrencyFormat.setCurrency(displayCurrency);
return noDecimalCurrencyFormat.format(price);
}
int beforeDecimal = totalLength - fractionDigits;
for (int i = 0; i < beforeDecimal; i++) {
builder.append('#');
}
// So we display "$0.55" instead of "$.55"
if (totalLength <= fractionDigits) {
builder.append('0');
}
builder.append('.');
for (int i = 0; i < fractionDigits; i++) {
builder.append('0');
}
double modBreak = Math.pow(10, fractionDigits);
double decimalPrice = price / modBreak;
DecimalFormat decimalFormat = new DecimalFormat(builder.toString());
decimalFormat.setCurrency(displayCurrency);
return decimalFormat.format(decimalPrice);
}
}